Ejemplos de Funciones de Concatenación
La función CONCAT() no debería confundirse con la palabra clave de script CONCATENATE.
En su forma más simple, Concat() sirve para unir, o concatenar, valores/palabras/selecciones en una misma cadena. No obstante, también se puede utilizar de otras maneras para ayudarnos a resolver problemas. Todos los ejemplos están basados en la siguiente tabla:
Table | MyColumn | Date | Value |
---|---|---|---|
Data | JKL | 01/01/2012 | 11 |
Data1 | WVX | 01/02/2012 | 13 |
Data | GHI | 01/03/2012 | 13 |
Data | ABC | 01/04/2012 | 15 |
Data1 | STU | 01/05/2012 | 18 |
Data1 | PQR | 01/06/2012 | 10 |
Data1 | MNO | 01/07/2012 | 25 |
Data | DEF | 01/08/2012 | 11 |
Concatenación simple de cadenas
Como ya se ha mencionado antes, la función concat permite concatenar una lista de valores. Estos valores pueden ser de codificación fija o derivar de selecciones/datos.
=CONCAT(MyColumn,',')
=CONCAT(DISTINCT MyColumn,',')
La sentencia concat simple concatenaría todos los valores posibles desde la columna MyColumn. Podemos añadir la palabra clave DISTINCT. Esto asegurará que cada valor se muestre una única vez en la cadena:
ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX
Cuando utilizamos una sentencia concat simple, tenemos la opción de añadir un criterio de ordenación a la función, para ordenar los valores de la cadena por una columna de nuestra elección. En el ejemplo a continuación, la columna de fecha se ha añadido para ordenar los valores.
=CONCAT(MyColumn, ',', Date)
Resultado: JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF
Concat() dentro de una Expresión/Sentencia Set
Ejemplo: Trasladar múltiples valores dinámicos a una expresión de análisis de conjuntos
A veces queremos trasladar una selección dinámica de valores a una sentencia set. Para ello, necesitamos añadir unos símbolos de entrecomillado simple a la cadena, de modo que la función CONCAT() devuelva por ej. 'JKL','VWX'. Pero no podemos dejar los símbolos de entrecomillado tal cual, puesto que serían interpretados al evaluarse la función Concat, y no al evaluar la expresión set. Utilice la función Chr() en vez:
=CONCAT(Chr(39)&MyColumn&Chr(39),',')
Ahora ya puede trasladar esta sentencia concat al interior de una expresión:
=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)
En la mayoría de los casos, esta técnica se utilizará cuando tenemos islas de datos. Nos permite trasladar valores al interior de una expresión sin afectar ninguna parte del modelo de datos, puesto que la tabla de islas de datos no está conectada al mismo.
Concat() en el script
Concat también puede utilizarse en el script para convertir múltiples filas en un único valor de columna, igual que cualquier otra agregación.
Recordando los datos fuente que utilizamos antes, el resultado en el script de CONCAT es el siguiente:
A continuación el resultado de esta función de script:
Table | CombinedData |
---|---|
Data | ABC,DEF,GHI,JKL |
Data1 | MNO,PQR,STU,WVX |
Usar Rank() para influir en Concat()
Si utiliza otra función de manera conjunta con concat() obtendrá resultados interesantes. En este ejemplo, Rank() se ha utilizado para extraer los tres mejores agentes (basándose en Valor) y concatenándolos.
=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')
Resultado: ABC,MNO,STU